package control;

public class Buscador {

	private static Buscador instancia = null;

	public static final int SIGUIENTE = 0;
	public static final int REINICIAR = 1;
	public static final int REPETIR = 2;

	private int modoBusqueda = REINICIAR;

	public static final int NO_MAS_COINCIDENCIAS = -1;
	public static final int SIN_COINCIDENCIAS = -2;

	public void setModoBusqueda(int modoBusqueda) {
		this.modoBusqueda = modoBusqueda;
	}

	public static Buscador instanciar() {
		if (instancia == null)
			instancia = new Buscador();
		return instancia;
	}

	private int indice;
	private boolean enBusqueda = false;

	public Buscador() {
		indice = 0;
	}

	public int buscar(String contenido, String texto, boolean sensibleMayusculas) {
		if (modoBusqueda == REINICIAR) {
			enBusqueda = false;
			indice = 0;
		} else if(modoBusqueda == SIGUIENTE){
			indice += texto.length();
			enBusqueda = true;
			modoBusqueda = REINICIAR;
		}
		else{
			enBusqueda = true;
			modoBusqueda = REINICIAR;
		}

		if(sensibleMayusculas){
			
			indice = contenido.indexOf(texto, indice);
		}
		else{
			
			String contenidoToLower = contenido.toLowerCase();
			indice = contenidoToLower.indexOf(texto.toLowerCase(), indice);
		}
		
		if (indice < 0) {
			if (enBusqueda)
				return NO_MAS_COINCIDENCIAS;
			return SIN_COINCIDENCIAS;
		}

		return indice;
	}
}
